//
//  AppDelegate.swift
//  Weibo12
//
//  Created by HM on 15/12/26.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit


@UIApplicationMain
// 如果崩溃到这个地方，就代表是 OC 的问题
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // 注册通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchRootViewContrller:", name: HMSwitchRootViewControllerNotification, object: nil)
        
        
        // 初始化 window 
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        // 设置根控制器
//        if HMUserAccountViewModel.sharedViewModel.userLogin {
//            window?.rootViewController = defaultRootViewController()
//        }else{
//            window?.rootViewController = HMMainViewController()
//        }
        window?.rootViewController = HMUserAccountViewModel.sharedViewModel.userLogin ? defaultRootViewController() : HMMainViewController()
        
        // 成为主窗口并可见
        window?.makeKeyAndVisible()
        
        
        return true
    }
    
    func switchRootViewContrller(noti: NSNotification) {
        // 切换控制器
        print("切换控制器")
        if noti.object == nil {
            window?.rootViewController = HMMainViewController()
        }else {
            window?.rootViewController = HMWelcomeViewController()
        }
    }
    
    // 默认根控制器：里面会根据是否有新版本返回不同的控制器
    func defaultRootViewController() -> UIViewController {
        if hasNewVersion() {
            return HMNewFeatureViewController()
        }else{
            return HMWelcomeViewController()
        }
    }
    
    /// 判断是否有新版本
    ///
    /// - returns: <#return value description#>
    func hasNewVersion() -> Bool {
        
        // 从沙盒里面取存的版本
        let sanboxVersion = NSUserDefaults.standardUserDefaults().stringForKey("version")
        
        // 取到当前app的版本号
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"]! as! String
        
        // 保存当前版本号,如果不保存的话，下次进入，第 54 行代码取到的值就为 nil
        NSUserDefaults.standardUserDefaults().setObject(currentVersion, forKey: "version")
            
        if sanboxVersion == nil {
            return true
        }
        
        // 当前 app 的版本号大于沙盒里面的版本号，就代表有新版本
        if currentVersion.compare(sanboxVersion!) == .OrderedDescending {
            return true
        }
        
        return false
    }
    
    // 与 OC 中的 dealloc 类似
    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }

}

